package game.jrogue;

// attributes are added to inventory of mobile
// grant special abilities, modifiers, duration effects etc.
public class Effect {
    
    public static void init() {
        Thing t=Lib.extend("기본 효과","기본 사물");
        t.set("IsEffect",1);
        t.set("NoStack",1);
        t.set("ImageSource","Effects");
        t.set("이미지",45);
        t.set("최소레벨",1);
        t.set("효과명","효과");
        Lib.add(t);
        
        t=Lib.extend("임시 효과","기본 효과");
        t.set("IsTemporaryEffect",1);
        t.set("IsActive",1);
        t.addHandler("OnAction",Scripts.decay(true));
        Lib.add(t);
        
        Poison.init();
        initCurses();
        initBlessings();
        initBadEffects();
    }
    
    private static void initCurses() {
    	Thing t;
    	
    	t=Lib.extend("기본 저주","임시 효과");
    	t.set("IsCurse",1);
        t.set("효과명","cursed");
        t.set("특성추가메시지","You feel like this is going to be a bad day");
    	Lib.add(t);
    	
    	t=Lib.extend("저주","기본 저주");
        t.set("수명",10000);
        t.add("CarriedModifiers",Modifier.linear("행운",100,-50));
    	Lib.add(t);
    	
    	t=Lib.extend("불운의 저주","기본 저주");
        t.set("수명",3000);
        t.add("CarriedModifiers",Modifier.linear("행운",100,-100));
        t.set("특성추가메시지","오늘은 아마 최악의 날이 될 것 같습니다.");
    	Lib.add(t);
    	
    	t=Lib.extend("파멸의 저주","기본 저주");
        t.set("수명",30000);
        t.set("효과명","doomed");
        t.add("CarriedModifiers",Modifier.linear("행운",100,-150));
    	Lib.add(t);
    	
    	t=Lib.extend("맹인의 저주","기본 저주");
        t.set("부패율",100);
        t.set("효과명","blinded");
        t.add("CarriedModifiers",Modifier.linear("IsBlind",0,1));
        t.set("특성추가메시지","당신은 눈이 멀었습니다!");
    	Lib.add(t);
    }

    private static void initBadEffects() {
    	Thing t;
    
    	t=Lib.extend("기본 나쁜 효과","임시 효과");
    	t.set("IsBadEffect",1);
        t.set("효과명","나쁜 효과");
    	Lib.add(t);

        t=Lib.extend("혼란","기본 나쁜 효과");
        t.set("IsActive",20000);
        t.set("수명",2000);
        t.set("ResistStat","WP");
        t.set("ResistDifficulty",30);
        t.set("효과명","confused");
        t.set("특성추가메시지","갑자기 모든것이 매우 혼란스럽습니다!");
        t.set("저항메시지","당신은 어지럼증을 느끼지만, 간신히 제정신을 붙잡는데 성공합니다.");
        t.add("CarriedModifiers",Modifier.linear("IsConfused",0,1));
        Lib.add(t);
        
    	t=Lib.extend("느림","기본 나쁜 효과");
        t.set("수명",3000);
    	t.set("효과명","느림");
    	t.set("CancelEffect","급속");
        t.add("CarriedModifiers",Modifier.linear("속도",66,0));
    	Lib.add(t);
    	
    	t=Lib.extend("거미줄","기본 나쁜 효과");
    	t.set("수명",4000);
    	t.set("효과명","거미줄에 얽힘");
        t.add("CarriedModifiers",Modifier.linear("이동속도",80,0));
        t.add("CarriedModifiers",Modifier.linear("공격속도",80,0));
        t.add("CarriedModifiers",Modifier.linear("AG",50,0));
        t.add("CarriedModifiers",Modifier.linear("SK",75,0));
    	Lib.add(t);
    }

    
    private static void initBlessings() {
    	Thing t;
    	
    	t=Lib.extend("기본 축복","임시 효과");
    	t.set("IsBlessing",1);
    	t.set("IsActive",1);
        t.set("효과명","blessed");
    	Lib.add(t);    	
    	
    	t=Lib.extend("축복","기본 축복");
        t.set("수명",5000);
        t.add("CarriedModifiers",Modifier.linear("행운",100,30));
    	Lib.add(t);
    	
    	t=Lib.extend("돌가죽","기본 축복");
        t.set("수명",5000);
    	t.set("효과명","돌가죽");
        t.add("CarriedModifiers",Modifier.bonus("ARM",30));
        t.set("특성추가메시지","당신의 피부가 단단해진 것 같습니다.");
    	Lib.add(t);
    	
    	t=Lib.extend("불의 보호","기본 축복");
        t.set("수명",5000);
    	t.set("효과명","불의 보호");
        t.add("CarriedModifiers",Modifier.bonus("ARM:fire",30));
        t.add("CarriedModifiers",Modifier.bonus("RES:fire",15));
        t.set("특성추가메시지","당신의 피가 끓기 시작합니다.");
    	Lib.add(t);
    	
    	t=Lib.extend("얼음의 보호","기본 축복");
        t.set("수명",5000);
    	t.set("효과명","얼음의 보호");
        t.add("CarriedModifiers",Modifier.bonus("ARM:ice",30));
        t.add("CarriedModifiers",Modifier.bonus("RES:ice",15));
        t.set("특성추가메시지","당신의 몸이 심하게 차가와집니다.");
    	Lib.add(t);
    	
    	t=Lib.extend("독 저항","기본 축복");
        t.set("수명",5000);
    	t.set("효과명","독 저항");
        t.add("CarriedModifiers",Modifier.bonus("RES:poison",20));
        t.set("특성추가메시지","당신의 몸이 더 편하고 건강해진 것 같습니다");
    	Lib.add(t);
    	
    	t=Lib.extend("급속","기본 축복");
        t.set("수명",5000);
    	t.set("효과명","급속");
    	t.set("CancelEffect","느림");
        t.add("CarriedModifiers",Modifier.linear("속도",100,80));
        t.set("특성추가메시지","당신은 매우 빨라진 걸 느낍니다.");
    	Lib.add(t);
    	
    	t=Lib.extend("가속","기본 축복");
        t.set("수명",5000);
    	t.set("효과명","가속");
    	t.set("CancelEffect","느림");
        t.add("CarriedModifiers",Modifier.linear("이동속도",150,0));
        t.set("특성추가메시지","당신의 발이 훨씬 빨라진 것 같습니다.");
    	Lib.add(t);
    	
    	t=Lib.extend("광폭","기본 축복");
        t.set("수명",5000);
    	t.set("효과명","광폭");
    	t.set("CancelEffect","진정");
        t.add("CarriedModifiers",Modifier.bonus(Skill.ATTACK,2));
        t.add("CarriedModifiers",Modifier.bonus(Skill.FEROCITY,1));
		t.add("CarriedModifiers",Modifier.linear("Defence",50,-1));
        t.add("CarriedModifiers",Modifier.constant("IsBerserk",1));
        t.set("특성추가메시지","당신은 분노를 느낍니다!");
        Lib.add(t);
    	
    	t=Lib.extend("진정","기본 축복");
        t.set("수명",5000);
    	t.set("효과명","진정");
    	t.set("CancelEffect","광폭");
        t.add("CarriedModifiers",Modifier.linear("CH",110,3));
        t.add("CarriedModifiers",Modifier.linear("IN",110,3));
        t.set("특성추가메시지","당신의 마음이 차분해집니다.");
    	Lib.add(t);
    	
    	t=Lib.extend("공포의 권위","기본 축복");
        t.set("수명",5000);
    	t.set("효과명","공포의 권위");
     	t.add("CarriedModifiers",Modifier.linear("공포점수",100,2));
        t.add("CarriedModifiers",Modifier.linear("CH",60,0));
        t.set("특성추가메시지","당신은 약한 존재들을 지배할 의지를 느낍니다.");
        Lib.add(t);
        
    	t=Lib.extend("반투명화","기본 축복");
        t.set("수명",1000);
    	t.set("효과명","ethereal");
     	t.add("CarriedModifiers",Modifier.linear("IsEthereal",0,1));
        t.set("특성추가메시지","You feel that you are disconnected from the world");
        Lib.add(t);
        
    	t=Lib.extend("비행","기본 축복");
        t.set("수명",5000);
    	t.set("효과명","비행");
     	t.add("CarriedModifiers",Modifier.linear("IsFlying",0,1));
        t.set("특성추가메시지","당신은 날기 시작합니다.");
        Lib.add(t);
    }
    
    public static Thing temporary(Modifier m, int time) {
        Thing a=Lib.create("임시 효과");
        a.set("수명",time);
        a.add("CarriedModifiers",m);
        return a;
    }
}